package com.dc.designPattern._15_iterator.impl;

import com.google.common.collect.Lists;

import java.util.Iterator;
import java.util.List;

/**
 * Description: 具体的聚合持有对象集合_书架类
 *  提供一个方法，返回一个迭代器，该迭代器可以正确遍历集合
 *
 * @author: gdc
 * @date: 2021/5/18
 * @version 1.0
 */
public class BookShelf implements Aggregate {

    /**
     * 书 列表(此处可以提供单独的方法来获取或添加列表信息)
     */
    private List<Book> books;

    public BookShelf() {
        this.books = Lists.newArrayList();
    }

    /**
     * 获取书信息
     * @param index         索引
     * @return              书信息
     */
    public Book getBook(int index) {
        return books.get(index);
    }

    /**
     * 添加书信息
     * @param book          书
     */
    public void addBook(Book book) {
        books.add(book);
    }

    /**
     * 获取书的数量
     * @return              书的数量
     */
    public int getLength() {
        return books.size();
    }

    @Override
    public Iterator iterator() {
        return new BookShelfIterator(this);
    }
}